#ifndef TASK_H_
#define TASK_H_

#ifndef TASK_MAX_NUM
    #define TASK_MAX_NUM   10 //最大Task数
#endif

#ifndef TACK_TICK_TIME
    #define TACK_TICK_TIME 1  //节拍时间ms
#endif

enum Taskstat
{
    TASK_STAT_READY=0,
    TASK_STAT_RUN, 
    TASK_STAT_SUSPEND,
    TASK_STAT_KILL 
};

typedef void (*Func)();

struct Task
{
    unsigned long  preTime; //前回时间
    unsigned long  cycle;   //执行周期
    Taskstat       stat;    //Task状态
    Func           event;   //函数指针
};

class SimpleTask
{
private:
    static Task _taskList[TASK_MAX_NUM];
public:
    SimpleTask();
    ~SimpleTask(){};

public:
    // 创建Task
    void createTask(Func event, unsigned long cycle);

    // Task调度器（单次调用）
    void taskScheduler();

    // Task调度器（周期调用）
    void taskRun();
};

#endif //TASK_H_